#!/usr/bin/python
# -*- coding: utf-8 -*-
# copyRight by heibanke
"""
图像按照一个角度旋转
"""

from matplotlib import pyplot as plt
import numpy as np

# 原始图像 为了时图像重合 用了四个点（列向量）
p = np.array(
    [
        [1, 2, 3, 1],
        [1, 3, 0, 1]
    ])

# 旋转30°
theta = np.pi / 6
H = np.eye(2)

# 旋转矩阵(向量空间)
H = np.array(
    [
        [np.cos(theta), -np.sin(theta)],
        [np.sin(theta), np.cos(theta)]
    ]
)

# 原点旋转
p1 = H.dot(p)
p2 = p - 1

# 下移一位在旋转
p3 = H.dot(p2)
p4 = p3 + 1

plt.plot(p[0, :], p[1, :],'b', label=u'原始')
plt.plot(p1[0, :], p1[1, :], 'r', label=u'旋转by 0点')
plt.plot(p2[0, :], p2[1, :], 'y', label=u'移位一次')
plt.plot(p3[0, :], p3[1, :], label=u'移位一次旋转')
plt.plot(p4[0, :], p4[1, :], 'g', label=u'旋转by顶点')

plt.xlim([-2, 4])
plt.ylim([-2, 4])

plt.grid(True)
plt.legend()
plt.show()
